; ModuleID = 'expr'
source_filename = "expr"

@0 = private unnamed_addr constant [16 x i8] c"expr value: %d\0A\00", align 1

declare i32 @printf(ptr, ...)

define i32 @main() {
entry:
  %a = alloca i32, align 4
  store i32 4, ptr %a, align 4
  %b = alloca i32, align 4
  store i32 5, ptr %b, align 4
  %a1 = load i32, ptr %a, align 4
  %b2 = load i32, ptr %b, align 4
  %mul = mul nsw i32 %a1, %b2
  %add = add nsw i32 %mul, 4
  %sub = sub nsw i32 %add, 3
  %a3 = load i32, ptr %a, align 4
  %b4 = load i32, ptr %b, align 4
  %mul5 = mul nsw i32 %b4, 3
  %add6 = add nsw i32 %a3, %mul5
  %sub7 = sub nsw i32 %add6, 1
  %0 = call i32 (ptr, ...) @printf(ptr @0, i32 %sub7)
  ret i32 0
}
